package com.wjm.api.ReflectPackage;

/**
 * Data:2022年07月30日
 * Author:wjm
 * Content: Reflect反射机制
 *
 *
 *  获取Class对象：
 *          不管通过以下那种方式来获取Class对象，如果字节码加载时只有一份，那么获得的Class也是同一个。
 *
 *          1）Class.forName("全类名")    将字节码文件加载进内存，放回Class对象
 *                   多用于配置文件，使用在框架中，将类名定义在配置文件中。读取文件，加载类
 *
 *          2）类名.class()    通过类名的属性class获取Class对象
 *                   用于参数的传递
 *
 *          3）对象.getClass()   继承资Object的getClass()方法获取
 *                   多用于对象的获取字节码的方式
 *
 */
public class ReflectDemo {
    public static void main(String[] args) throws ClassNotFoundException {
        //第一种获取方式
        Class c1 = Class.forName("com.wjm.api.ReflectPackage.Car");
        System.out.println(c1);

        //第二种方式
        Class c2 = Car.class;
        System.out.println(c2);

        //第三种方式
        Class c3 = new Car().getClass();
        System.out.println(c3);

        System.out.println("c1和c2是不是同一个对象:"+(c1 == c2));
        System.out.println("c1和c3是不是同一个对象:"+(c1 == c3));


    }
}
